// ==========================================
// 📖 API使用示例 - 复制这些代码到你的页面中
// ==========================================

const api = require('../../utils/api.js');

// ==========================================
// 示例1：获取歌曲列表
// ==========================================
function example1_getSongs() {
  api.getSongPage(1, 10).then(res => {
    console.log('✅ 获取歌曲成功：', res);
    
    // 处理数据
    const songs = res.records.map(song => ({
      id: song.id,
      title: song.name,
      singer: song.singerName || '未知歌手',
      coverImg: api.BASE_URL + song.pic,
      audioUrl: api.BASE_URL + song.url,
      lyric: song.lyric
    }));
    
    console.log('处理后的歌曲列表：', songs);
  }).catch(err => {
    console.error('❌ 获取歌曲失败：', err);
  });
}

// ==========================================
// 示例2：搜索歌曲
// ==========================================
function example2_searchSongs() {
  const keyword = '晴天';
  
  api.searchSong(keyword).then(res => {
    console.log(`✅ 搜索"${keyword}"成功：`, res);
    
    // 处理搜索结果
    const results = res.records.map(song => ({
      id: song.id,
      title: song.name,
      singer: song.singerName || '未知歌手'
    }));
    
    console.log('搜索结果：', results);
  }).catch(err => {
    console.error('❌ 搜索失败：', err);
  });
}

// ==========================================
// 示例3：获取歌手列表
// ==========================================
function example3_getSingers() {
  api.getSingerList().then(res => {
    console.log('✅ 获取歌手列表成功：', res);
    
    // 显示歌手信息
    res.forEach(singer => {
      console.log(`歌手：${singer.name}，地区：${singer.location}`);
    });
  }).catch(err => {
    console.error('❌ 获取歌手列表失败：', err);
  });
}

// ==========================================
// 示例4：获取歌单列表
// ==========================================
function example4_getSongLists() {
  api.getSongListAll().then(res => {
    console.log('✅ 获取歌单列表成功：', res);
    
    // 显示歌单信息
    res.forEach(list => {
      console.log(`歌单：${list.title}，风格：${list.style}`);
    });
  }).catch(err => {
    console.error('❌ 获取歌单列表失败：', err);
  });
}

// ==========================================
// 示例5：获取歌单中的歌曲
// ==========================================
function example5_getSongListSongs() {
  const songListId = 1; // 歌单ID
  
  api.getSongListSongs(songListId).then(res => {
    console.log(`✅ 获取歌单${songListId}的歌曲成功：`, res);
    
    // 显示歌单中的歌曲
    res.forEach(song => {
      console.log(`歌曲：${song.name}`);
    });
  }).catch(err => {
    console.error('❌ 获取歌单歌曲失败：', err);
  });
}

// ==========================================
// 示例6：获取歌手的歌曲
// ==========================================
function example6_getSingerSongs() {
  const singerId = 1; // 歌手ID
  
  api.getSingerSongs(singerId).then(res => {
    console.log(`✅ 获取歌手${singerId}的歌曲成功：`, res);
    
    // 显示歌手的歌曲
    res.forEach(song => {
      console.log(`歌曲：${song.name}`);
    });
  }).catch(err => {
    console.error('❌ 获取歌手歌曲失败：', err);
  });
}

// ==========================================
// 示例7：播放歌曲
// ==========================================
function example7_playSong() {
  // 先获取歌曲
  api.getSongDetail(1).then(song => {
    console.log('✅ 获取歌曲详情成功：', song);
    
    // 播放音乐
    const audioManager = wx.getBackgroundAudioManager();
    audioManager.title = song.name;
    audioManager.singer = song.singerName || '未知歌手';
    audioManager.coverImgUrl = api.BASE_URL + song.pic;
    audioManager.src = api.BASE_URL + song.url;
    
    console.log('🎵 开始播放：', song.name);
  }).catch(err => {
    console.error('❌ 获取歌曲详情失败：', err);
  });
}

// ==========================================
// 示例8：在Page中使用
// ==========================================
Page({
  data: {
    songs: [],
    singers: [],
    songLists: []
  },

  onLoad() {
    // 加载数据
    this.loadSongs();
    this.loadSingers();
    this.loadSongLists();
  },

  // 加载歌曲
  loadSongs() {
    api.getSongPage(1, 20).then(res => {
      const songs = res.records.map(song => ({
        id: song.id,
        title: song.name,
        singer: song.singerName || '未知歌手',
        coverImgUrl: song.pic ? api.BASE_URL + song.pic : '/images/default-cover.jpg',
        url: api.BASE_URL + song.url
      }));
      
      this.setData({ songs });
    }).catch(err => {
      console.error('加载歌曲失败', err);
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      });
    });
  },

  // 加载歌手
  loadSingers() {
    api.getSingerList().then(singers => {
      this.setData({ singers });
    }).catch(err => {
      console.error('加载歌手失败', err);
    });
  },

  // 加载歌单
  loadSongLists() {
    api.getSongListAll().then(songLists => {
      this.setData({ songLists });
    }).catch(err => {
      console.error('加载歌单失败', err);
    });
  },

  // 播放歌曲
  playSong(e) {
    const index = e.currentTarget.dataset.index;
    const song = this.data.songs[index];
    
    // 获取全局音频管理器
    const app = getApp();
    const audioManager = app.globalData.audioManager;
    
    // 设置音乐信息
    audioManager.title = song.title;
    audioManager.singer = song.singer;
    audioManager.coverImgUrl = song.coverImgUrl;
    audioManager.src = song.url;
    
    // 保存当前播放
    app.globalData.currentMusic = song;
    app.globalData.playlist = this.data.songs;
    app.globalData.playIndex = index;
    
    wx.showToast({
      title: '播放：' + song.title,
      icon: 'none'
    });
  },

  // 搜索
  onSearch() {
    const keyword = this.data.keyword;
    
    api.searchSong(keyword).then(res => {
      const results = res.records.map(song => ({
        id: song.id,
        title: song.name,
        singer: song.singerName || '未知歌手',
        coverImgUrl: song.pic ? api.BASE_URL + song.pic : '/images/default-cover.jpg',
        url: api.BASE_URL + song.url
      }));
      
      this.setData({ searchResults: results });
      
      if (results.length === 0) {
        wx.showToast({
          title: '未找到相关歌曲',
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('搜索失败', err);
    });
  }
})

// ==========================================
// 💡 使用提示
// ==========================================

/*
1. API基础地址：
   - 开发环境：http://localhost:9999
   - 生产环境：需要在 utils/api.js 中配置

2. 资源URL格式：
   - 图片：api.BASE_URL + song.pic
   - 音乐：api.BASE_URL + song.url
   
3. 错误处理：
   - 所有API都返回Promise
   - 使用 .then() 处理成功
   - 使用 .catch() 处理失败
   
4. 数据格式：
   - 后端返回的数据在 res.data 中
   - 分页数据在 res.records 中
   - 需要根据实际情况转换格式

5. 开发者工具配置：
   - 勾选"不校验合法域名"
   - 否则无法请求localhost
*/

